package com.tfjybj.itoo.teach.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.teach.entity.TeacherCourseEntity;
import com.tfjybj.itoo.teach.model.TeacherCourseAndCourseModel;
import com.tfjybj.itoo.teach.model.TeacherCourseModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

//import com.dmsdbj.itoo.tool.base.dao.BaseDaoSimplify;

/**
 * TeacherCourseDao接口
 * teacherCourse表
 *
 * @author 田成荣
 * @version 2.0.0
 * @since 2.0.0 2018-11-08 19:34:10
 */
@Repository("teacherCourseDao")
public interface TeacherCourseDao extends BaseMapper<TeacherCourseEntity> {
	
	//region 模板生成：模糊查询


	//endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 根据课程_id模糊查询teacherCourse
     *
     * @param courseId  课程_id
     * @return 模糊查询的teacherCourse集合
     * @author 郄子硕
     * @since 2.0.0 2018-11-08 19:34:10
     */
    List<TeacherCourseModel> queryLikeCourseId(@Param("courseId") String courseId);

    //region 根据课程id查询TeacherCourse
    /**
     * 根据课程id查询teacherCourse
     *
     * @param courseId  课程Id
     * @return 查询的teacherCourse
     * @author 郄子硕
     * @since 2.0.0 2018-11-10 15:05:05
     */
    List<TeacherCourseEntity> selectByCourseId(@Param("courseId") String courseId);


    /**
     * 根据教师id和课程类型 查询TeacherCourse表和Course表
     *
     * @param teacherId  教师Id
     * @return TeacherCourseAndCourseModel
     * @author 郄子硕
     * @since 2.0.0 2018-11-10 20:52:30
     */
    List<TeacherCourseAndCourseModel> selectByTeacherId(@Param("teacherId") String teacherId);

    /**
     * 根据关键词模糊查询课程名称或教师姓名
     *
     * @param strLike 课程名称或教师姓名关键词
     * @return 查询的teachercourse
     * @author 郄子硕
     * @since 2.0.0 2018-12-12 20:15:10
     */
    List<TeacherCourseModel> selectByStrLike(@Param("strLike") String strLike);

    /**
     * 根据学年学期、教师_id和课程_id 查询TeacherCourse表
     *
     * @param teacherId  教师Id
     * @param courseId  课程Id
     * @param schoolYear  学年学期
     * @return TeacherCourseModel
     * @author 郄子硕
     * @since 2.0.0 2018-11-28 14:44:04
     */
    List<TeacherCourseModel> selectByTeacherIdAndCourseIdAndYear(@Param("teacherId") String teacherId, @Param("courseId") String courseId, @Param("schoolYear") String schoolYear);

    /**
     * 根据课程id集 查询授课教师集和
     *
     * @param ids ids
     * @return TeacherCourseModel 教师授课表List
     * @author 郄子硕
     * @since 2.0.0 2018-11-12 13:48:22
     */
    List<TeacherCourseModel> selectListByTeacherId(@Param("list") List<String> ids);

    /**
     * 查询全部授课信息（分页，带code）
     *
     * @return 授课信息
     * @author 郄子硕
     * @since 2.0.0 2018-11-16 09:49:52
     */
    List<TeacherCourseModel> queryAllTeacherCourse();

    /**
     * 组合模糊查询全部授课信息（分页，带code）
     *
     * @return 授课信息
     * @author 郄子硕
     * @since 2.0.0 2018-12-12 16:29:07
     */
    List<TeacherCourseModel> selectListByTeacherAndCourse(@Param("courseName") String courseName, @Param("teacherName") String teacherName, @Param("schoolYear") String schoolYear);

    /**
     * 添加（一键组合）
     *
     * @param list List<TeacherCourseEntity>
     * @return 添加结果
     * @author 郄子硕
     * @since 2.0.0 2018-11-19 09:59:46
     */
    boolean insertAll(List<TeacherCourseEntity> list);

    /**
     * 查询是否存在该授课信息
     *
     * @param courseId
     * @param teacherId
     * @param schoolYear
     * @return 查询结果
     * @author 郄子硕
     * @since 2.0.0 2018-11-19 09:59:46
     */
    List<TeacherCourseModel> selectByCourseIdAndTeacherIdAndSchoolYear(@Param("courseId") String courseId, @Param("teacherId") String teacherId, @Param("schoolYear") String schoolYear);
}
